ποΈGitΠ―ΡΠ°ποΈ
Node / meshtastic / Meshtastic-Android / files / docs / en / developer / navigation-and-deep-links.md
docs/en/developer/navigation-and-deep-links.md 89fe2b58d7aa6f0af30af91e2ccf72f365c80bc7 (89fe2b58) Text, 3.19 KB
title: Navigation & Deep Links
parent: Developer Guide
nav_order: 4
last_updated: 2026-05-13
aliases:
β’ deeplinks
β’ navigation-3
β’ routes
Navigation & Deep Links
The app uses Navigation 3 with typed, serializable routes and centralized deep link resolution.
Route Architecture
All routes are defined in T383838core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/Routes.kt.
Route Hierarchy
T282828
Tff7b72interface T56d364Route Tb4b4b4: Te6edf3NavKey T8b949e// All routes implement NavKey
Tff7b72interface T56d364Graph Tb4b4b4: Te6edf3Route T8b949e// Graph roots for navigation hierarchies
Tf0883e@Serializable
Tff7b72sealed Tff7b72interface T56d364SettingsRoute Tb4b4b4: Te6edf3Route Tb4b4b4{
Tf0883e@Serializable Tff7b72data Tff7b72class T56d364SettingsTb4b4b4(Tff7b72val Te6edf3destNumTb4b4b4: Tffa657Int? Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4: Te6edf3SettingsRouteTb4b4b4, Te6edf3Graph
Tf0883e@Serializable Tff7b72data Tff7b72object T56d364DeviceConfiguration Tb4b4b4: Te6edf3SettingsRoute
Tf0883e@Serializable Tff7b72data Tff7b72object T56d364HelpDocs Tb4b4b4: Te6edf3SettingsRoute
Tf0883e@Serializable Tff7b72data Tff7b72class T56d364HelpDocPageTb4b4b4(Tff7b72val Te6edf3pageIdTb4b4b4: Tffa657StringTb4b4b4) Tb4b4b4: Te6edf3SettingsRoute
T8b949e// ...
Tb4b4b4}
Conventions
β’ Routes are T383838@Serializable for state restoration
β’ Use T383838data object for routes without parameters
β’ Use T383838data class for parameterized routes
β’ Group related routes under a T383838sealed interface
β’ Graph entry points implement both the route interface and T383838Graph
Deep Link Router
T383838DeepLinkRouter in T383838core/navigation maps URI deep links to typed backstack lists.
URI Format
T282828
meshtastic://meshtastic/{path}
Supported Deep Links
βββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ¬ββββββββββββββββββββββ
β URI Path β Route β Notes β
βββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββΌββββββββββββββββββββββ€
β T383838/settings β T383838SettingsRoute.Settings(null) β Settings root β
β T383838/settings/helpDocs β T383838SettingsRoute.HelpDocs β Docs browser β
β T383838/settings/helpDocs/{pageId} β T383838SettingsRoute.HelpDocPage(pageId) β Specific doc page β
β T383838/settings/help-docs β T383838SettingsRoute.HelpDocs β Compatibility alias β
β T383838/nodes β T383838NodesRoute.Nodes β Node list β
β T383838/nodes/{destNum} β T383838NodesRoute.NodeDetail(destNum) β Node detail β
β T383838/messages/{contactKey} β T383838ContactsRoute.Messages(contactKey) β Conversation β
β T383838/map β T383838MapRoute.Map(null) β Map view β
βββββββββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββββββββ
Backstack Synthesis
Deep links synthesize a full backstack, not just the target screen:
T282828
T8b949e// /settings/helpDocs/messages-and-channels produces:
Te6edf3listOfTb4b4b4(
Te6edf3SettingsRouteTb4b4b4.Te6edf3SettingsTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4,
Te6edf3SettingsRouteTb4b4b4.Te6edf3HelpDocsTb4b4b4,
Te6edf3SettingsRouteTb4b4b4.Te6edf3HelpDocPageTb4b4b4(Ta5d6ff"Ta5d6ffmessages-and-channelsTa5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
This ensures the user can navigate "up" correctly.
Adding a Deep Link
1. Define the typed route in T383838Routes.kt.
2. Add the mapping in T383838DeepLinkRouter.settingsSubRoutes (or equivalent for other graphs).
3. Add a test in T383838DeepLinkRouterTest.kt.
4. Register the navigation entry in the appropriate feature module.
Navigation Entry Registration
Each feature module provides entries via an extension function:
T282828
Tff7b72fun Td2a8ffEntryProviderScopeTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4.Te6edf3docsEntriesTb4b4b4(Te6edf3backStackTb4b4b4: Te6edf3NavBackStackTff7b72<Te6edf3NavKeyTff7b72>Tb4b4b4) Tb4b4b4{
Te6edf3entryTff7b72<Te6edf3SettingsRouteTb4b4b4.Te6edf3HelpDocsTff7b72> Tb4b4b4{ Te6edf3DocsBrowserScreenTb4b4b4(Te6edf3backStackTb4b4b4) Tb4b4b4}
Te6edf3entryTff7b72<Te6edf3SettingsRouteTb4b4b4.Te6edf3HelpDocPageTff7b72> Tb4b4b4{ Te6edf3route Tff7b72-Tff7b72> Te6edf3DocsPageRouteScreenTb4b4b4(Te6edf3routeTb4b4b4.Te6edf3pageIdTb4b4b4, Te6edf3backStackTb4b4b4) Tb4b4b4}
Tb4b4b4}
These are called from the settings navigation composition.
Testing
Deep link routing is tested in:
T282828
core/navigation/src/commonTest/kotlin/org/meshtastic/core/navigation/DeepLinkRouterTest.kt
Served by rngit 1.5.0 - Generated in 0.05s